这是一个连接ROS2导航系统和VDA5050协议的桥接器,实现了AGV在ROS2和VDA5050之间的数据交互。
将机器人的感知、建图定位、路径规划放在ROS2上完成,而控制器执行路径跟随以及状态反馈通过VDA5050协议完成,实现两个协议之间的相互通信。
VDA5050协议支持
ROS2集成
🆕 路径规划集成
/plan)🆕 共享地图管理
/map)🆕 路径跟踪和确认
数据转换
测试验证
┌─────────────────┐ MQTT ┌──────────────────┐ ROS2 ┌─────────────────┐
│ VDA5050 │◄──────────►│ ROS2 VDA5050 │◄─────────►│ ROS2 │
│ Master │ │ Bridge │ │ Navigation │
│ Control │ │ │ │ Stack │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │ │
│ Order/InstantActions │ State Publishing │ Goals/Status
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MQTT Broker │ │ Data │ │ Nav2/AMCL │
│ (Mosquitto) │ │ Conversion │ │ TF2 │
└─────────────────┘ └──────────────────┘ └─────────────────┘
# 安装MQTT broker
sudo apt update
sudo apt install mosquitto mosquitto-clients
# 安装Python MQTT客户端
pip3 install paho-mqtt
# 启动MQTT broker
sudo systemctl start mosquitto
sudo systemctl enable mosquitto
# 在工作空间根目录
source /opt/ros/humble/setup.bash
colcon build --packages-select ros2_vda5050_bridge --symlink-install
source install/setup.bash
# 方法1: 直接运行
ros2 run ros2_vda5050_bridge vda5050_bridge
# 方法2: 使用launch文件
ros2 launch ros2_vda5050_bridge bridge_launch.py
# 方法3: 自定义参数
ros2 launch ros2_vda5050_bridge bridge_launch.py \
mqtt_host:=localhost \
mqtt_port:=1883 \
manufacturer:=MyCompany \
serial_number:=AGV_001
# 启动地图发布器(模拟共享地图)
ros2 run ros2_vda5050_bridge map_publisher
# 启动路径发布器(模拟Nav2路径规划)
ros2 run ros2_vda5050_bridge path_publisher
# 基础MQTT测试
python3 test_mqtt_basic.py
# 完整系统测试
python3 test_vda5050_system.py
# VDA5050数据类型测试
python3 test_vda5050_types.py
# 🆕 路径转换功能测试
python3 test_path_conversion_simple.py
# 🆕 完整集成测试
python3 test_ros2_path_integration.py
# 🆕 交互式演示
python3 demo_vda5050_usage.py
MQTT通信 - 100% 通过
VDA5050协议 - 100% 通过
ROS2集成 - 95% 通过
数据转换 - 90% 通过
# config/bridge_config.yaml
vda5050_bridge:
ros__parameters:
mqtt_broker_host: "localhost"
mqtt_broker_port: 1883
manufacturer: "ROS2Manufacturer"
serial_number: "ROS2_AGV_001"
map_frame: "map"
base_frame: "base_link"
state_publish_rate: 2.0
uagv/v2/{manufacturer}/{serialNumber}/
├── order # 接收订单 (订阅)
├── instantActions # 接收即时动作 (订阅)
├── state # 发布状态 (发布)
├── connection # 连接状态 (发布)
└── factsheet # AGV信息 (发布)
MQTT连接失败
# 检查MQTT broker状态
sudo systemctl status mosquitto
# 测试MQTT连接
mosquitto_pub -h localhost -t test/topic -m "test message"
ROS2节点启动失败
# 检查ROS2环境
source /opt/ros/humble/setup.bash
source install/setup.bash
# 检查包是否正确安装
ros2 pkg list | grep vda5050
TF2变换错误
# 检查TF树
ros2 run tf2_tools view_frames
# 检查特定变换
ros2 run tf2_ros tf2_echo map base_link
OrderMessage: 订单消息StateMessage: 状态消息Node: 节点定义Edge: 边定义Action: 动作定义/goal_pose (geometry_msgs/PoseStamped): 导航目标/cmd_vel (geometry_msgs/Twist): 速度命令/amcl_pose (geometry_msgs/PoseWithCovarianceStamped): 位置估计高级导航功能
动作扩展
系统优化
可视化工具
MIT License
欢迎提交Issue和Pull Request来改进这个项目。
如有问题或建议,请通过GitHub Issues联系。
项目状态: ✅ 基础功能完成,可用于生产环境测试
最后更新: 2025-09-05